package logicaDeNegocio;


import java.io.ObjectInputStream.GetField;
import java.sql.Date;
import java.sql.SQLException;

import java.text.SimpleDateFormat;
import java.util.ArrayList;


import entidades.*;
import entidades.DAOs.*;
import entidades.DTOs.DTOFormacion;
import entidades.DTOs.DTOJugador;


/**
 * @author sg
 * @version 1.0
 * @created 13-nov-2013 06:33:07 p.m.
 */
public class GestionDeEquipos {

	public GestionDeEquipos()throws SQLException, ClassNotFoundException{

	}

	public void finalize() throws Throwable, SQLException, ClassNotFoundException {

	}
	
	public static int crearEquipo(int id_usuario,String nombre,ArrayList<DTOJugador> listaTitulares, ArrayList <DTOJugador> listaSuplentes,int presupuesto )throws SQLException, ClassNotFoundException {
	
		/*pido los nombres de todos los equipos de fantasia y de 1ra division*/
		ArrayList <String> nombres1raDivision= new ArrayList <String>(DAOequipos.getNombresEquipo1raDivision());
		ArrayList <String> nombresFantasia= new ArrayList <String>(DAOequipos.getNombresEquipodeFantasia());
		if ((nombres1raDivision.contains(nombre)== true) || (nombresFantasia.contains(nombre)==true))
			return 1;
		if (!GestionDeFechas.fechaAbierta())
			return 2;
		
		/* obtengo fecha actual*/
		java.util.Date utilDate = new java.util.Date();
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
		
        /*obtengo los id de los titulares y suplentes*/
		ArrayList <Integer> listaIdTitulares = new ArrayList<Integer>();
		ArrayList <Integer> listaIdSuplentes = new ArrayList<Integer>();
		for(int i=0;i<listaTitulares.size();i++)
			listaIdTitulares.add(listaTitulares.get(i).getId_jugador());
		for(int i=0;i<listaSuplentes.size();i++)
			listaIdSuplentes.add(listaSuplentes.get(i).getId_jugador());
		
		/*creo formacion y equipo*/
		Formacion nuevaFormacion = new Formacion (GestionDeJugadores.getTitulares(listaIdTitulares),GestionDeJugadores.getSuplentes(listaIdSuplentes),GestionDeFechas.getUltimaFechaAbierta());
		EquipoDeFantasia nuevoEquipo=new EquipoDeFantasia(nombre,sqlDate,presupuesto);
		nuevoEquipo.addFormacion(nuevaFormacion);
		
		/*recupero el usuario*/
		Usuario user=GestionDeUsuarios.getUsuario(id_usuario);
		user.setEquipo(nuevoEquipo); 
		
		/*guardo usuario*/
		DAOusuarios.guardar(user);
		
		/*auditoria*/
		GestionDeUsuarios.generarAuditoria(id_usuario,"crear equipo");
		return 0;
			
		
	}
	
	public static void crearFormaciones(int id_fecha) throws SQLException, ClassNotFoundException {
		
		ArrayList <DTOFormacion> listaFormaciones = new ArrayList <DTOFormacion>();
		listaFormaciones = DAOformaciones.selectFormaciones(id_fecha);
		for(int i = 0;i<listaFormaciones.size();i++)
			System.out.println("idFormoriginales: "+(listaFormaciones.get(i).getId_form()));
		for(int i = 0;i<listaFormaciones.size();i++){
			DTOFormacion formacionSgte = new DTOFormacion();
			formacionSgte.setId_form((listaFormaciones.get(i).getId_form())+1);
			System.out.println("idForm: "+(listaFormaciones.get(i).getId_form()+1));
			formacionSgte.setId_equipo(listaFormaciones.get(i).getId_equipo());
			formacionSgte.setId_fecha((listaFormaciones.get(i).getId_fecha())+1);
			DAOformaciones.addFormacion(formacionSgte);
			
			//Asignar titulares y suplentes a la formacion de la nueva fecha
			
			ArrayList <Integer> listaIDsTitulares = new ArrayList<Integer>();
			listaIDsTitulares = DAOjugadores.getIDsJugadores(listaFormaciones.get(i).getId_form(),"titulares");
			for(int j = 0;j<listaIDsTitulares.size();j++){
				DAOformaciones.addTitular(listaIDsTitulares.get(j), listaFormaciones.get(i).getId_form()+1);
			}
			
			ArrayList <Integer> listaIDsSuplentes = new ArrayList<Integer>();
			listaIDsSuplentes = DAOjugadores.getIDsJugadores(listaFormaciones.get(i).getId_form(),"suplentes");
			for(int j = 0;j<listaIDsSuplentes.size();j++){
				DAOformaciones.addSuplente(listaIDsSuplentes.get(j), listaFormaciones.get(i).getId_form()+1);		
			}
		
		}
	
	}

	public static String getNombreEquipo(int id_equipo) {
		// TODO Auto-generated method stub
		try{
			return DAOequipos.getNombreEquipo1raDivision(id_equipo);
		}
		catch (SQLException a){
			a.printStackTrace();
			return new String();
		}
		catch(ClassNotFoundException b){
			b.printStackTrace();
			return new String();
		}
	}

	
}
//end Gestion De Equipos